# 任务详情
# 给定某电视剧的弹幕信息（共12集），完成下方指定任务。 

# 传入某集电视剧series_num。比如series_num=2，表示对第2集的弹幕内容分词并统计其词频，返回词频排名第N的词语。

# N = (series_num * 9 - 2) % 10。例如：series_num=2，N=(2 * 9 - 2) % 10，N = 6，返回弹幕词频排名第6的词语。

# 某电视剧弹幕信息列名含义如下：

# 列名	含义

# 索引
# contents	弹幕内容
# likeCount	点赞数量
# tv_name	集数
# 任务要求
# 1. 程序接收变量series_num，int类型；返回结果是str类型

# 2. 需要使用下方给出的中文分词常用停用词库筛选结果，即停用词不纳入词频统计范围

# 3. 只统计字数大于等于2的词语

# 3. 任务所需文件在下方给出，文件为utf-8编码格式的csv文件，需要使用pandas读取文件

# 4. 某电视剧弹幕信息和中文分词常用停用词库可以使用requests库或pandas库读取

# 5. 提示：某电视剧弹幕信息文件存在部分数据为空的情况，可以预选除去空值或用空字符串填充填充空值

# 测试用例
# 输入：2        输出：'片头' 

# 输入：1        输出：'感觉'
# 
# 链接：http://72.itmc.org.cn:80/JS001/static/data/python/3030/112/fj_3222_hiddren_corner__danmu.csv
# 停用词：http://72.itmc.org.cn:80/JS001/static/data/python/3030/112/fj_cn_stopwords.txt
# 
# # 1.运行或提交代码不需要自己编写测试用例，后台自动进行测试检查。
# 2.您编写代码的区域可以不限定在类或者函数体内，保证输入与输出符合任务要求即可。
# 3.点击“运行代码”按钮，可以查看程序设计是否正确，运行次数越多，任务得分越低。
# 4.点击“提交代码”按钮，系统将保存代码，并记录任务数据。
# 5.点击右上方“结束任务”按钮，系统将在后台计算任务得分，任务结束。
# -*- coding: utf-8 -*- 
import jieba
import requests
import pandas as pd
from jieba import analyse


class Solution:
    def TvSeriesMsgTask(self, series_num: int) -> str:
        url = "http://72.itmc.org.cn:80/JS001/static/data/python/3030/112/fj_3222_hiddren_corner__danmu.csv"
        stopurl = "http://72.itmc.org.cn:80/JS001/static/data/python/3030/112/fj_cn_stopwords.txt"
        stopdata = pd.read_csv(stopurl, sep="\n", header=None)
        stoplist = stopdata[0].tolist()
        data = pd.read_csv(url)
        data.dropna(inplace=True)
        data = data[data['tv_name'] == series_num]
        datalist = "".join(str(line) for line in data['contents'])
        datalist = jieba.lcut(datalist)
        list1 = {}
        for i in datalist:
            if (len(i) >= 2) and (i not in stoplist):
                # 方法1(主)
                list1[i] = list1.get(i, 0) + 1
            # 方法1(次)
            # if i in list1.keys():
            # 	list1[i] += 1
            # else:
            # 	list1[i] = 1
        list2 = sorted(list1.items(), key=lambda x: x[1], reverse=True)
        N = (series_num * 9 - 2) % 10
        return list2[N - 1][0]


print(Solution.TvSeriesMsgTask(Solution, 2))
